perm filename BASIC.PUB[T,LSP]1 blob
sn#616182 filedate 1981-10-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 . DEVICE XGP
C00008 00003 .<< Print in //italics/ or boldface. >>
C00010 00004 .<< Print page headings on XGP (using boldface) before new page started. >>
C00012 00005 .<< Set line spacing to new value. >>
C00014 00006 .<< Start text justification. >>
C00015 00007 .<< Set up for body of text. >>
C00016 ENDMK
C⊗;
. DEVICE XGP;
.
.
. SIDES ← 1;
.<< Set up fonts and text responses for device selected. >>
.
.
.<< Turn on quote character ("α") and font switching character ("%"). >>
.
.TURN ON "α%";
.
.<< Declare Baskerville fonts, FIX25 for special characters, and SUP for footnote
.numbers. >>
.
.FONT 1 "FRACT2[T,LYN]"; <<modified BASL30>>
.FONT 2 "BASI30";
.FONT 3 "BASB30";
.FONT 4 "FIX25";
.FONT 5 "SUP";
. FONT 6 "DIA2.FNT[T,LYN]";
. FONT 7 "MTEXT.FNT[T,LYN]";
.
.
.<< a sharp, flat, and alla breve time signature. >>
.
.AT "##" ⊂ "%7α#%*"; ⊃;
.AT "#b" ⊂ "%7αb%*"; ⊃;
.AT "#C" ⊂ "%7αC%*"; ⊃;
.AT "#≠" ⊂ "%7α≠%*"; ⊃;
.AT "#4" ⊂ "%64%*"; ⊃;
.AT "#≥" ⊂ "%6≥%*"; ⊃;
.
.
.<< Put in ligatures in all three Baskerville fonts. >>
.
.AT "ffl" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α∞" ELSE "αfαfαl"; ⊃;
.AT "ffi" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≠" ELSE "αfαfαi"; ⊃;
.AT "ff" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≥" ELSE "αfαf"; ⊃;
.AT "fi" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α≡" ELSE "αfαi"; ⊃;
.AT "fl" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α∨" ELSE "αfαl"; ⊃;
.
.<< Provide Stanford ASCII characters not available in Baskerville. >>
.
.AT "'%" ⊂ "α%"; ⊃;
.AT "¬" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α¬%*" ELSE "α¬"; ⊃;
.AT "ε" ⊂ IF THISFONT = 1 THEN "%2αε%*" ELSE "αε"; ⊃;
.AT "∀" ⊂ IF THISFONT = 1 THEN "%2α∀%*" ELSE "α∀"; ⊃;
.AT "~" ⊂ IF THISFONT = 2 THEN "%1α~%*" ELSE "α~"; ⊃;
.AT "≠" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≠%*" ELSE "α≠"; ⊃;
.AT "≥" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≥%*" ELSE "α≥"; ⊃;
.AT "≡" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "%4α≡%*" ELSE "α≡"; ⊃;
.
.<< Convert two successive Baskerville hyphens into em dash. >>
.
.AT "--" ⊂ IF 1 ≤ THISFONT ≤ 3 THEN "α¬" ELSE "α--"; ⊃;
.
.<< fix .) constructs. >>
.
.<<AT ".)" ⊂ ".) " ⊃; >>
.
.
.
.<< make up diacriticals >>
.
.AT ":a" ⊂ "%6α:%*a" ⊃;
.AT ":o" ⊂ "%6α:%*o" ⊃;
.AT ":u" ⊂ "%6α:%*u" ⊃;
.AT "'a" ⊂ "%6α'%*a" ⊃;
.AT "'e" ⊂ "%6α'%*e" ⊃;
.AT "'o" ⊂ "%6α'%*o" ⊃;
.AT "'u" ⊂ "%6α'%*u" ⊃;
.AT "'U" ⊂ "%6α'%*U" ⊃;
.AT "`a" ⊂ "%6α`%*a" ⊃;
.AT "`e" ⊂ "%6α`%*e" ⊃;
.AT "`o" ⊂ "%6α`%*o" ⊃;
.AT "`u" ⊂ "%6α`%*u" ⊃;
.AT "''" ⊂ "α'" ⊃;
.AT "∧a" ⊂ "%6α∧%*a" ⊃;
.AT "∧e" ⊂ "%6α∧%*e" ⊃;
.AT "∧i" ⊂ "%6α∧%*i" ⊃;
.AT "∧o" ⊂ "%6α∧%*o" ⊃;
.AT "∧u" ⊂ "%6α∧%*u" ⊃;
.AT ",c" ⊂ "%6α,%*c" ⊃;
.AT "+t" ⊂ "%6α+%*t" ⊃;
.AT ",C" ⊂ "%6α,%*C" ⊃;
.AT "+S" ⊂ "%6α+%*S" ⊃;
.AT "-a" ⊂ "%6α-%*a" ⊃;
.AT ":O" ⊂ "%6α:%*O" ⊃;
.AT ":e" ⊂ "%6α:%*e" ⊃;
.AT ":y" ⊂ "%6α:%*y" ⊃;
.AT ":U" ⊂ "%6α:%*U" ⊃;
.AT "'E" ⊂ "%6α'%*E" ⊃;
.AT "'i" ⊂ "%6α'%*i" ⊃;
.AT "''" ⊂ "α'" ⊃;
.AT "'\" ⊂ "α/" ⊃;
.AT "∨r" ⊂ "%6α∨%*r" ⊃;
.AT "∨s" ⊂ "%6α∨%*s" ⊃;
.AT "∨z" ⊂ "%6α∨%*z" ⊃;
.AT "[ALPH]" ⊂ "%4αα%*" ⊃;
.AT "[ARROW]" ⊂ "%4α↓%*" ⊃;
.AT "[DOT]" ⊂ "%4α.%*" ⊃;
.AT "[INF]" ⊂ "%4α∞%*" ⊃;
.
.
.<< Digest number of sides per page and columns per side. >>
.
. SIDES ← 1;
.<< Set up page frame and COLMNS macro for selected device. >>
.
. VARIABLE PAGE_HEIGHT, PAGE_WIDTH;
.
. ODDLEFTBORDER←EVENLEFTBORDER←1375;
. LMARG←0;
. TOPBORDER←500;
. PAGE_WIDTH←RMARG←76;
. PAGE_HEIGHT←54;
. PAGE FRAME PAGE_WIDTH WIDE PAGE_HEIGHT HIGH;
. AREA TEXT LINES 4 TO 53;
. TITLE AREA HEADING LINES 1 TO 3;
. TITLE AREA FOOTING LINE 54;
. COLS ← 1;
. SSNAME ← NULL;
. PLACE TEXT;
. NEXT PAGE;
.
.<< Print in //italics/ or ⊗⊗boldface⊗. >>
.
.AT "//" ENTRY "/"
. ⊂
. LASTFONT1 ← THISFONT;
. ("%2ENTRY%" & LASTFONT1);
. ⊃;
.
.AT "⊗⊗" ENTRY "⊗"
. ⊂
. LASTFONT2 ← THISFONT;
. ("%3ENTRY%" & LASTFONT2);
. ⊃;
.
.<< Print page headings on XGP (using boldface) before new page started. >>
.
.
.
.RECURSIVE MACRO STANDARD TITLES
. ⊂
. NOFILL;
. TURN ON "←→{";
. PREFACE 0;
. INDENT 0,0,0;
. PLACE HEADING;
. SELECT 3;
. !EH;
. PLACE FOOTING;
. !EF;
. ⊃;
.
.<< Set line spacing to new value. >>
.
.MACRO SPACES(NUMSPACES)
. ⊂
. IF NUMSPACES > 0
. THEN
. START "SET NEW INTER- AND INTRA-PARAGRAPH SPACING"
. BREAK;
. PREFACE NUMSPACES;
. SPACING NUMSPACES-1;
. END "SET NEW INTER- AND INTRA-PARAGRAPH SPACING"
. ELSE USERERR("SPACES argument not positive integer");
. ⊃;
.<< Start text justification. >>
.
.MACRO JUSTIFY
. ⊂
. FILL;
. ADJUST;
. RETAIN;
. ⊃;
.
.<< Set up for body of text. >>
.
. PORTION MAIN
.
. EVERY HEADING(,,{PAGE!});
.
. SELECT 1;
. JUSTIFY;
. COUNT PAGE FROM 1 TO 999;
. NEXT PAGE;
. SPACES 2;
. INDENT 5;